Skip to content

Comments

feat: Add Honeycomb integration#3149

Open
gaga1307 wants to merge 26 commits intosuperplanehq:mainfrom
gaga1307:feat/honeycomb-integration
Open

feat: Add Honeycomb integration#3149
gaga1307 wants to merge 26 commits intosuperplanehq:mainfrom
gaga1307:feat/honeycomb-integration

Conversation

@gaga1307
Copy link

@gaga1307 gaga1307 commented Feb 17, 2026

Implements #2999

Implementation

This PR adds the Honeycomb integration, enabling users to trigger workflows from Honeycomb alerts and send custom events to Honeycomb datasets.

Why

This integration allows observability-driven workflows by connecting Honeycomb alerts and events directly into SuperPlane automation flows.


Connection & Authentication

  • Connection method: Management Key authentication (<keyID>:<secret> format)
  • Supported regions: US (api.honeycomb.io) and EU (api.eu1.honeycomb.io)
  • Key location: Honeycomb → Team Settings → API Keys

During sync, SuperPlane automatically provisions and stores two scoped API keys:

  • Configuration Key — used for managing triggers and webhook recipients (via /1 API)
  • Ingest Key — used for sending events to datasets (via /1/events API)

No manual API key setup beyond the Management Key is required.


Components

1. On Alert Fired (Trigger)

Webhook-based trigger that starts workflow executions when a Honeycomb trigger fires (e.g., threshold breaches, SLO burns).

Features:

  • Automatic webhook recipient creation and attachment to the selected Honeycomb trigger
  • Shared webhook per dataset — multiple OnAlertFired nodes targeting the same dataset reuse a single webhook recipient, with trigger IDs merged
  • Secure webhook authentication via token (X-Honeycomb-Webhook-Token or Authorization: Bearer)
  • Trigger ID filtering — only processes webhook payloads matching the configured trigger

Use cases:

  • Notify Slack when error rate exceeds threshold

2. Create Event (Component)

Sends a custom JSON event to a Honeycomb dataset via the Events API.

Features:

  • Configurable dataset targeting
  • Flexible JSON field mapping
  • Automatic RFC3339Nano UTC timestamp injection via X-Honeycomb-Event-Time if a time field is not provided in the payload

Use cases:

  • Track deployment milestones in Honeycomb

Demo

Google Drive

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Enhances the security of the webhook token validation by using constant-time comparison to prevent timing attacks. This change ensures that the length of the provided token does not leak information, and improves the overall robustness of the integration.

Signed-off-by: Dragica dragica.draskic@gmail.com
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Improves error handling in the webhook integration by providing clearer error messages and ensuring that all potential failure points are properly logged. This change aims to enhance the user experience by making it easier to diagnose issues related to webhook events.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from be0f6f9 to 55a3330 Compare February 17, 2026 20:44
Refines assertions in the Honeycomb event creation test to ensure the payload is a valid JSON object and that the event time is correctly sent via the header. This change enhances the clarity of the test and improves validation of the event data structure.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Refines the Honeycomb client to set the event timestamp header only when the "time" field is not provided in the fields map. This change ensures that user-defined timestamps are respected. Additionally, updates the test cases to verify the correct behavior of the timestamp header based on the presence of the "time" field, enhancing test clarity and coverage.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Enhances the token validation logic in the OnAlertFired handler to ensure that tokens prefixed with "bearer" from the Authorization header are not stripped. Additionally, adds new test cases to verify the correct handling of tokens from both the X-Honeycomb-Webhook-Token and X-Shared-Secret headers, improving overall robustness and coverage of the integration.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Eliminates the unused BaseURLEU constant from the Honeycomb client, streamlining the code and improving clarity. This change helps maintain cleaner integration code by removing unnecessary elements.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@AleksandarCole AleksandarCole added pr:stage-1/3 Needs to pass basic review. edu pr:stage-3/3 Ready for full, in-depth, review pr:stage-2/3 Needs to pass functional review and removed pr:stage-1/3 Needs to pass basic review. pr:stage-3/3 Ready for full, in-depth, review labels Feb 18, 2026
@AleksandarCole
Copy link
Collaborator

AleksandarCole commented Feb 20, 2026

Hi @gaga1307 thanks for trying this one.
I am afraid I am blocked from further testing since the initial connection fails (video attached):

Kapture.2026-02-20.at.09.31.53.mp4

Based on the video you attached I can share some early feedback on UX though:

  • Seems like the icon is broken (shows puzzle instead of honeycomb icon)
  • I am not sure about webhooks being set on single component level and user having to manually create them. Can this be done in the background through API when component is created/added to Canvas?

Feel free to join us on our Discord server for a faster feedback loop :)

@AleksandarCole AleksandarCole self-assigned this Feb 20, 2026
@AleksandarCole AleksandarCole self-requested a review February 20, 2026 12:02
@gaga1307
Copy link
Author

Thanks for the feedback! I’ll fix the icon and try implementing automatic webhook provisioning using a Management API key so users don’t need to configure them manually.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from 4dbe756 to 2a3e227 Compare February 22, 2026 12:13
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from e308e94 to 39e739b Compare February 22, 2026 12:28
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from aa2aeba to e600c1a Compare February 22, 2026 12:50
Adds a more descriptive error message when the configuration key v1 ping fails, enhancing clarity in error reporting and aiding in troubleshooting.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Updates the CreateEventConfiguration interface to allow fields to be stored as a raw JSON string or an object. Introduces a new function, formatFieldsForDisplay, to properly format fields for display, ensuring that JSON strings are parsed correctly to avoid double-encoding. This change improves the handling and presentation of event data in the Honeycomb integration.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
…ation

Enhances the error handling in the OnAlertFired setup function by adding a descriptive error message when ensuring the configuration key fails. This change improves clarity in error reporting and aids in troubleshooting.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from ffb47b3 to 980e48a Compare February 22, 2026 13:51
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
@gaga1307 gaga1307 force-pushed the feat/honeycomb-integration branch from b435362 to 0aee77f Compare February 22, 2026 14:07
gaga1307 and others added 4 commits February 22, 2026 15:08
Introduces the pingV1WithKey function to validate both configuration and ingest keys against the Honeycomb API. Enhances the EnsureIngestKey method to perform a ping check on the ingest key, improving error handling and ensuring the key's validity before reuse. This change strengthens the integration's reliability and error reporting.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Updates the CreateEvent method to use getSecretValue for retrieving the ingest key instead of the deprecated getIngestHeaderValue method. This change simplifies the code by removing the unused method and enhances the overall clarity of the client implementation.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Introduces a new function, stripTriggerForUpdate, to centralize the removal of read-only and conflicting fields from trigger payloads before sending updates to the Honeycomb API. This change reduces code duplication in the UpdateTrigger and RemoveRecipientFromTrigger methods, enhancing maintainability and clarity.

Additionally, improves error handling in the CreateEvent method by providing a more descriptive error message when the ingest key is not found.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Enhances the OnAlertFired setup function by adding a step to set metadata for the trigger ID. This change improves the integration's ability to track alert triggers and provides better context for subsequent operations. Additionally, it includes error handling for the metadata setting process to ensure robustness.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Signed-off-by: Dragica Draskic <dragica.draskic@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

edu pr:stage-2/3 Needs to pass functional review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants